#ifndef SCRIPT_LOADER_HPP
#define SCRIPT_LOADER_HPP

#define SCRIPT_ITEM_LOADER "./script/ItemLoader.script"
#define SCRIPT_MONSTER_LOADER "./script/MonsterLoader.script"
#define SCRIPT_CHARACTER_LOADER "./script/CharacterLoader.script"

#include "Game/Level/Item.hpp"
#include "Game/Level/Monster.hpp"
#include "Game/Level/Character.hpp"

class ScriptLoader
{
protected:
	ScriptLoader(App *appPtr = 0);
    ~ScriptLoader();
public:

    static ScriptLoader* GetScriptLoader(App *appPtr = 0);
	// Load all Script
	void LoadItems();
	void LoadMonsters();
	void LoadCharacters();

	// Return a copy Item
    Item* CopyItem(int id);
    //Monster* CopyMonster(int id);

private:
    static std::map<const int, const Item*> m_items;
    static std::map<const int, const Monster*> m_monsters;

    static ScriptLoader* _singletonScriptLoader;

	App* m_app;

};



#endif
